Fork me on GitHub

mongo数据库的迁移

为了给毕设中的关键数据备份,本地笔记本A通过VPN可以连接到实验室的跳板机B,从跳板机B可以跳到存储mongo数据库所在机器C。现在想要把C主机数据库中几个集合的数据传到笔记本A,并且在本地重建mongo数据库。

  • 远程数据库的mongo db目录如下,想要传输的数据为每个库中的analysis集合

    show dbs;
    admin 0.000GB
    config 0.000GB
    cuckoo_nfs_db 19.361GB
    cuckoo_nfs_db2 6.897GB
    cuckoo_nfs_db3 54.200GB
    cuckoo_nfs_db4 2014.692GB
    cuckoo_nfs_db5 2116.398GB
    cuckoo_nfs_db6 38.097GB
    cuckoo_nfs_db7 143.612GB

  • 步骤:
    • 把数据库C里的数据存储到跳板机B上的文件
    • 把跳板机B上的文件传到本地笔记本A
    • 在本地笔记本A根据传来的文件,重建mongo数据库

涉及命令记录

  • 从远程数据库中读取数据存储为本地文件:

    1
    mongodump -h 远程数据库IP -d 远程数据库名 -c 远程数据库中的集合名 -o 本地某个文件夹路径(path_x)
  • 从本地读取文件恢复mongo数据库

    1
    mongorestore -h localhost:27017 -d 即将存入的本地数据库名称 本地数据文件夹路径(path_x)
  • scp传输文件夹内所有内容

    1
    scp -r ivic@192.168.105.222:/home/ivic/mongo_data_copy_0710/cuckoo_nfs_db_copy /home/LAB/tangmy/tmy_trans

迁移结果
查看本地mongo,发现要迁移的几个表都在对应的数据库里了。迁移后的数据库名称不需要和远程数据库中的名称一致,因为我们是基于文件来作为传输中介的。每个数据库中的数据保存下来之后,其实是json和bson文件。
例如:

1
analysis.bson analysis.metadata.json

show dbs;
admin 0.000GB
config 0.000GB
cuckoo_nfs_db_copy 0.095GB
cuckoo_nfs_db_copy2 0.019GB
cuckoo_nfs_db_copy3 0.278GB
cuckoo_nfs_db_copy4 4.829GB
cuckoo_nfs_db_copy5 4.802GB
cuckoo_nfs_db_copy6 0.117GB
cuckoo_nfs_db_copy7 0.351GB

-------------本文结束感谢您的阅读-------------